package edu.nf.exam.controller;

import com.github.pagehelper.PageInfo;
import edu.nf.exam.vo.PaperResultVO;
import edu.nf.exam.vo.ResultVO;

import java.util.List;

/**
 * @author wangl
 * @date 2021/5/31
 * 基础控制器，让所有的子类控制器继承
 */
public class BaseController {

    /**
     * 封装分页数据
     * @param pageInfo
     * @param <T>
     * @return
     */
    protected <T> ResultVO<List<T>> page(PageInfo<T> pageInfo){
        ResultVO<List<T>> vo = new ResultVO<>();
        vo.setCode(0);
        vo.setCount(pageInfo.getTotal());
        vo.setData(pageInfo.getList());
        return vo;
    }

    /**
     * 响应一个成功状态码
     * @return
     */
    protected ResultVO success(){
        ResultVO vo = new ResultVO();
        vo.setCode(200);
        return vo;
    }

    /**
     * 返回普通数据的vo对象
     * @param data
     * @param <T>
     * @return
     */
    protected <T> ResultVO<T> success(T data){
        ResultVO<T> vo = new ResultVO<>();
        vo.setCode(200);
        vo.setData(data);
        return vo;
    }

    /**
     * 返回指定code成功码的vo对象
     * @param data
     * @param <T>
     * @return
     */
    protected <T> ResultVO<T> success(int code,T data){
        ResultVO<T> vo = new ResultVO<>();
        vo.setCode(code);
        vo.setData(data);
        return vo;
    }

    /**
     * 返回失败状态的vo对象
     * @param code
     * @param message
     * @return
     */
    protected ResultVO fail(int code, String message){
        ResultVO vo = new ResultVO();
        vo.setCode(code);
        vo.setMessage(message);
        return vo;
    }


    /**
     * 返回试卷数据的vo对象
     * @param data
     * @param <T>
     * @return
     */
    protected <T> PaperResultVO<T> success(T data,int singleCount,int multipleCount,int judgeCount){
        PaperResultVO<T> vo = new PaperResultVO<>();
        vo.setCode(200);
        vo.setData(data);
        vo.setSingleCount(singleCount);
        vo.setMultipleCount(multipleCount);
        vo.setJudgeCount(judgeCount);
        return vo;
    }
}
